package co.edu.javeriana.konigsberg.xavier.entidad;

import java.io.Serializable;

import javax.persistence.*;

import java.math.BigInteger;
import java.util.List;


/**
 * The persistent class for the departamento database table.
 * 
 */
@Entity
@Table(name="departamento")
@NamedQueries({
@NamedQuery(name="Departamento.findAll", query="SELECT d FROM Departamento d"),
@NamedQuery(name="Departamento.findByParent", query="SELECT d FROM Departamento d WHERE d.pais.idPais = :idPais")
})
public class Departamento implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private BigInteger idDepartamento;

	
	@ManyToOne
	@JoinColumn(name="idPais")
	private Pais pais;

	private String nombreDepartamento;

	//bi-directional many-to-one association to Ciudad
	@OneToMany(mappedBy="departamento")
	private List<Ciudad> ciudads;

//	//bi-directional many-to-one association to Programa
//	@OneToMany(mappedBy="departamento")
//	private List<Programa> programas;

	public Departamento() {
	}

	public BigInteger getIdDepartamento() {
		return this.idDepartamento;
	}

	public void setIdDepartamento(BigInteger idDepartamento) {
		this.idDepartamento = idDepartamento;
	}

	public Pais getPais() {
		return this.pais;
	}

	public void setPais(Pais pais) {
		this.pais = pais;
	}

	public String getNombreDepartamento() {
		return this.nombreDepartamento;
	}

	public void setNombreDepartamento(String nombreDepartamento) {
		this.nombreDepartamento = nombreDepartamento;
	}

	public List<Ciudad> getCiudads() {
		return this.ciudads;
	}

	public void setCiudads(List<Ciudad> ciudads) {
		this.ciudads = ciudads;
	}

	public Ciudad addCiudad(Ciudad ciudad) {
		getCiudads().add(ciudad);
		ciudad.setDepartamento(this);

		return ciudad;
	}

	public Ciudad removeCiudad(Ciudad ciudad) {
		getCiudads().remove(ciudad);
		ciudad.setDepartamento(null);

		return ciudad;
	}

//	public List<Programa> getProgramas() {
//		return this.programas;
//	}
//
//	public void setProgramas(List<Programa> programas) {
//		this.programas = programas;
//	}
//
//	public Programa addPrograma(Programa programa) {
//		getProgramas().add(programa);
//		programa.setDepartamento(this);
//
//		return programa;
//	}
//
//	public Programa removePrograma(Programa programa) {
//		getProgramas().remove(programa);
//		programa.setDepartamento(null);
//
//		return programa;
//	}

}